home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / exctsccr.c < prev    next >
C/C++ Source or Header  |  2000-05-23  |  20KB  |  578 lines

  1. /***************************************************************************
  2.  
  3. Exciting Soccer - (c) 1983 Alpha Denshi Co.
  4.  
  5. Supported sets:
  6. Exciting Soccer - Alpha Denshi
  7. Exciting Soccer (bootleg) - Kazutomi
  8.  
  9.  
  10. Preliminary driver by:
  11. Ernesto Corvi
  12. ernesto@imagina.com
  13.  
  14. Jarek Parchanski
  15. jpdev@friko6.onet.pl
  16.  
  17.  
  18. NOTES:
  19. The game supports Coin 2, but the dip switches used for it are the same
  20. as Coin 1. Basically, this allowed to select an alternative coin table
  21. based on wich Coin input was connected.
  22.  
  23. KNOWN ISSUES/TODO:
  24. - Cocktail mode is unsupported.
  25.  
  26. ***************************************************************************/
  27.  
  28. #include "driver.h"
  29. #include "vidhrdw/generic.h"
  30.  
  31. /* from vidhrdw */
  32. extern void exctsccr_vh_screenrefresh(struct osd_bitmap *bitmap, int full_refresh);
  33. extern void exctsccr_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  34. WRITE_HANDLER( exctsccr_gfx_bank_w );
  35. extern int exctsccr_vh_start( void );
  36. extern void exctsccr_vh_stop( void );
  37.  
  38. /* from machine */
  39. extern unsigned char *exctsccr_mcu_ram;
  40. WRITE_HANDLER( exctsccr_mcu_w );
  41. WRITE_HANDLER( exctsccr_mcu_control_w );
  42.  
  43.  
  44. WRITE_HANDLER( exctsccr_DAC_data_w )
  45. {
  46.     DAC_signed_data_w(offset,data << 2);
  47. }
  48.  
  49.  
  50. /***************************************************************************
  51.  
  52.     Memory definition(s)
  53.  
  54. ***************************************************************************/
  55.  
  56. static struct MemoryReadAddress readmem[] =
  57. {
  58.     { 0x0000, 0x5fff, MRA_ROM },
  59.     { 0x6000, 0x63ff, MRA_RAM }, /* Alpha mcu (protection) */
  60.     { 0x7c00, 0x7fff, MRA_RAM }, /* work ram */
  61.     { 0x8000, 0x83ff, videoram_r },
  62.     { 0x8400, 0x87ff, colorram_r },
  63.     { 0x8800, 0x8bff, MRA_RAM }, /* ??? */
  64.     { 0xa000, 0xa000, input_port_0_r },
  65.     { 0xa040, 0xa040, input_port_1_r },
  66.     { 0xa080, 0xa080, input_port_3_r },
  67.     { 0xa0c0, 0xa0c0, input_port_2_r },
  68.     { -1 }    /* end of table */
  69. };
  70.  
  71. static struct MemoryWriteAddress writemem[] =
  72. {
  73.     { 0x0000, 0x5fff, MWA_ROM },
  74.     { 0x6000, 0x63ff, exctsccr_mcu_w, &exctsccr_mcu_ram }, /* Alpha mcu (protection) */
  75.     { 0x7c00, 0x7fff, MWA_RAM }, /* work ram */
  76.     { 0x8000, 0x83ff, videoram_w, &videoram, &videoram_size },
  77.     { 0x8400, 0x87ff, colorram_w, &colorram },
  78.     { 0x8800, 0x8bff, MWA_RAM }, /* ??? */
  79.     { 0xa000, 0xa000, MWA_NOP }, /* ??? */
  80.     { 0xa001, 0xa001, MWA_NOP }, /* ??? */
  81.     { 0xa002, 0xa002, exctsccr_gfx_bank_w },
  82.     { 0xa003, 0xa003, MWA_NOP }, /* Cocktail mode ( 0xff = flip screen, 0x00 = normal ) */
  83.     { 0xa006, 0xa006, exctsccr_mcu_control_w }, /* MCU control */
  84.     { 0xa007, 0xa007, MWA_NOP }, /* This is also MCU control, but i dont need it */
  85.     { 0xa040, 0xa06f, MWA_RAM, &spriteram }, /* Sprite pos */
  86.     { 0xa080, 0xa080, soundlatch_w },
  87.     { 0xa0c0, 0xa0c0, watchdog_reset_w },
  88.     { -1 }    /* end of table */
  89. };
  90.  
  91. static struct MemoryReadAddress sound_readmem[] =
  92. {
  93.     { 0x0000, 0x8fff, MRA_ROM },
  94.     { 0xa000, 0xa7ff, MRA_RAM },
  95.     { 0xc00d, 0xc00d, soundlatch_r },
  96.     { -1 }    /* end of table */
  97. };
  98.  
  99. static struct MemoryWriteAddress sound_writemem[] =
  100. {
  101.     { 0x0000, 0x8fff, MWA_ROM },
  102.     { 0xa000, 0xa7ff, MWA_RAM },
  103.     { 0xc008, 0xc009, exctsccr_DAC_data_w },
  104.     { 0xc00c, 0xc00c, soundlatch_w }, /* used to clear the latch */
  105.     { 0xc00f, 0xc00f, MWA_NOP }, /* ??? */
  106.     { -1 }    /* end of table */
  107. };
  108.  
  109. static struct IOWritePort sound_writeport[] =
  110. {
  111.     { 0x82, 0x82, AY8910_write_port_0_w },
  112.     { 0x83, 0x83, AY8910_control_port_0_w },
  113.     { 0x86, 0x86, AY8910_write_port_1_w },
  114.     { 0x87, 0x87, AY8910_control_port_1_w },
  115.     { 0x8a, 0x8a, AY8910_write_port_2_w },
  116.     { 0x8b, 0x8b, AY8910_control_port_2_w },
  117.     { 0x8e, 0x8e, AY8910_write_port_3_w },
  118.     { 0x8f, 0x8f, AY8910_control_port_3_w },
  119.     { -1 }    /* end of table */
  120. };
  121.  
  122. /* Bootleg */
  123. static struct MemoryReadAddress bl_readmem[] =
  124. {
  125.     { 0x0000, 0x5fff, MRA_ROM },
  126.     { 0x8000, 0x83ff, videoram_r },
  127.     { 0x8400, 0x87ff, colorram_r },
  128.     { 0x8800, 0x8fff, MRA_RAM }, /* ??? */
  129.     { 0xa000, 0xa000, input_port_0_r },
  130.     { 0xa040, 0xa040, input_port_1_r },
  131.     { 0xa080, 0xa080, input_port_3_r },
  132.     { 0xa0c0, 0xa0c0, input_port_2_r },
  133.     { -1 }    /* end of table */
  134. };
  135.  
  136. static struct MemoryWriteAddress bl_writemem[] =
  137. {
  138.     { 0x0000, 0x5fff, MWA_ROM },
  139.     { 0x7000, 0x7000, AY8910_write_port_0_w },
  140.     { 0x7001, 0x7001, AY8910_control_port_0_w },
  141.     { 0x8000, 0x83ff, videoram_w, &videoram, &videoram_size },
  142.     { 0x8400, 0x87ff, colorram_w, &colorram },
  143.     { 0x8800, 0x8fff, MWA_RAM }, /* ??? */
  144.     { 0xa000, 0xa000, MWA_NOP }, /* ??? */
  145.     { 0xa001, 0xa001, MWA_NOP }, /* ??? */
  146.     { 0xa002, 0xa002, exctsccr_gfx_bank_w }, /* ??? */
  147.     { 0xa003, 0xa003, MWA_NOP }, /* Cocktail mode ( 0xff = flip screen, 0x00 = normal ) */
  148.     { 0xa006, 0xa006, MWA_NOP }, /* no MCU, but some leftover code still writes here */
  149.     { 0xa007, 0xa007, MWA_NOP }, /* no MCU, but some leftover code still writes here */
  150.     { 0xa040, 0xa06f, MWA_RAM, &spriteram }, /* Sprite Pos */
  151.     { 0xa080, 0xa080, soundlatch_w },
  152.     { 0xa0c0, 0xa0c0, watchdog_reset_w },
  153.     { -1 }    /* end of table */
  154. };
  155.  
  156. static struct MemoryReadAddress bl_sound_readmem[] =
  157. {
  158.     { 0x0000, 0x5fff, MRA_ROM },
  159.     { 0x6000, 0x6000, soundlatch_r },
  160.     { 0xe000, 0xe3ff, MRA_RAM },
  161.     { -1 }    /* end of table */
  162. };
  163.  
  164. static struct MemoryWriteAddress bl_sound_writemem[] =
  165. {
  166.     { 0x0000, 0x5fff, MWA_ROM },
  167.     { 0x8000, 0x8000, MWA_NOP }, /* 0 = DAC sound off, 1 = DAC sound on */
  168.     { 0xa000, 0xa000, soundlatch_w }, /* used to clear the latch */
  169.     { 0xc000, 0xc000, exctsccr_DAC_data_w },
  170.     { 0xe000, 0xe3ff, MWA_RAM },
  171.     { -1 }    /* end of table */
  172. };
  173.  
  174. /***************************************************************************
  175.  
  176.     Input port(s)
  177.  
  178. ***************************************************************************/
  179.  
  180. INPUT_PORTS_START( exctsccr )
  181.     PORT_START      /* IN0 */
  182.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
  183.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  184.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  185.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 )
  186.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
  187.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  188.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  189.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  190.  
  191.     PORT_START      /* IN1 */
  192.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  193.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
  194.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
  195.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_COCKTAIL )
  196.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   | IPF_8WAY | IPF_COCKTAIL )
  197.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  198.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT| IPF_8WAY | IPF_COCKTAIL )
  199.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  200.  
  201.     PORT_START      /* IN2 */
  202.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
  203.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
  204.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
  205.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
  206.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  207.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  208.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  209.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  210.  
  211.     PORT_START      /* DSW0 */
  212.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
  213.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  214.     PORT_DIPSETTING(    0x03, "A 1C/1C B 3C/1C" )
  215.     PORT_DIPSETTING(    0x01, "A 1C/2C B 1C/4C" )
  216.     PORT_DIPSETTING(    0x00, "A 1C/3C B 1C/6C" )
  217.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) )
  218.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  219.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  220.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
  221.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  222.     PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
  223.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Difficulty ) )
  224.     PORT_DIPSETTING(    0x10, "Easy" )
  225.     PORT_DIPSETTING(    0x00, "Hard" )
  226.     PORT_DIPNAME( 0x60, 0x00, "Game Time" )
  227.     PORT_DIPSETTING(    0x20, "1 Min." )
  228.     PORT_DIPSETTING(    0x00, "2 Min." )
  229.     PORT_DIPSETTING(    0x60, "3 Min." )
  230.     PORT_DIPSETTING(    0x40, "4 Min." )
  231.     PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Has to be 0 */
  232. INPUT_PORTS_END
  233.  
  234. /***************************************************************************
  235.  
  236.     Graphic(s) decoding
  237.  
  238. ***************************************************************************/
  239.  
  240. static struct GfxLayout charlayout1 =
  241. {
  242.     8,8,    /* 8*8 characters */
  243.     256,    /* 256 characters */
  244.     3,        /* 3 bits per pixel */
  245.     { 0x4000*8+4, 0, 4 },    /* plane offset */
  246.     { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
  247.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  248.     16*8    /* every char takes 16 consecutive bytes */
  249. };
  250.  
  251. static struct GfxLayout charlayout2 =
  252. {
  253.     8,8,    /* 8*8 characters */
  254.     256,    /* 256 characters */
  255.     3,        /* 3 bits per pixel */
  256.     { 0x2000*8, 0, 4 },    /* plane offset */
  257.     { 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
  258.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  259.     16*8    /* every char takes 16 consecutive bytes */
  260. };
  261.  
  262. static struct GfxLayout spritelayout1 =
  263. {
  264.     16,16,        /* 16*16 sprites */
  265.     64,            /* 64 sprites */
  266.     3,            /* 3 bits per pixel */
  267.     { 0x4000*8+4, 0, 4 },    /* plane offset */
  268.     { 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3,
  269.             24*8+0, 24*8+1, 24*8+2, 24*8+3, 0, 1, 2, 3  },
  270.     { 0 * 8, 1 * 8, 2 * 8, 3 * 8, 4 * 8, 5 * 8, 6 * 8, 7 * 8,
  271.             32 * 8, 33 * 8, 34 * 8, 35 * 8, 36 * 8, 37 * 8, 38 * 8, 39 * 8 },
  272.     64*8    /* every sprite takes 64 bytes */
  273. };
  274.  
  275. static struct GfxLayout spritelayout2 =
  276. {
  277.     16,16,        /* 16*16 sprites */
  278.     64,         /* 64 sprites */
  279.     3,            /* 3 bits per pixel */
  280.     { 0x2000*8, 0, 4 },    /* plane offset */
  281.     { 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3,
  282.             24*8+0, 24*8+1, 24*8+2, 24*8+3, 0, 1, 2, 3  },
  283.     { 0 * 8, 1 * 8, 2 * 8, 3 * 8, 4 * 8, 5 * 8, 6 * 8, 7 * 8,
  284.             32 * 8, 33 * 8, 34 * 8, 35 * 8, 36 * 8, 37 * 8, 38 * 8, 39 * 8 },
  285.     64*8    /* every sprite takes 64 bytes */
  286. };
  287.  
  288. static struct GfxLayout spritelayout =
  289. {
  290.     16,16,        /* 16*16 sprites */
  291.     64,            /* 64 sprites */
  292.     3,            /* 2 bits per pixel */
  293.     { 0x1000*8+4, 0, 4 },    /* plane offset */
  294.     { 8*8, 8*8+1, 8*8+2, 8*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3,
  295.             24*8+0, 24*8+1, 24*8+2, 24*8+3, 0, 1, 2, 3  },
  296.     { 0 * 8, 1 * 8, 2 * 8, 3 * 8, 4 * 8, 5 * 8, 6 * 8, 7 * 8,
  297.             32 * 8, 33 * 8, 34 * 8, 35 * 8, 36 * 8, 37 * 8, 38 * 8, 39 * 8 },
  298.     64*8    /* every sprite takes 64 bytes */
  299. };
  300.  
  301. static struct GfxDecodeInfo gfxdecodeinfo[] =
  302. {
  303.     { REGION_GFX1, 0x0000, &charlayout1,      0, 32 }, /* chars */
  304.     { REGION_GFX1, 0x2000, &charlayout2,      0, 32 }, /* chars */
  305.     { REGION_GFX1, 0x1000, &spritelayout1, 16*8, 32 }, /* sprites */
  306.     { REGION_GFX1, 0x3000, &spritelayout2, 16*8, 32 }, /* sprites */
  307.     { REGION_GFX2, 0x0000, &spritelayout,  16*8, 32 }, /* sprites */
  308.     { -1 } /* end of array */
  309. };
  310.  
  311. /***************************************************************************
  312.  
  313.     Sound interface(s)
  314.  
  315. ***************************************************************************/
  316.  
  317. static struct AY8910interface ay8910_interface =
  318. {
  319.     4,    /* 4 chips */
  320.     1500000,    /* 1.5 MHz ? */
  321.     { 15, 15, 15, 15 }, /* volume */
  322.     { 0, 0, 0, 0 },
  323.     { 0, 0, 0, 0 },
  324.     { 0, 0, 0, 0 }, /* it writes 0s thru port A, no clue what for */
  325.     { 0, 0, 0, 0 }
  326. };
  327.  
  328. static struct DACinterface dac_interface =
  329. {
  330.     2,
  331.     { 50, 50 }
  332. };
  333.  
  334. /* Bootleg */
  335. static struct AY8910interface bl_ay8910_interface =
  336. {
  337.     1,    /* 1 chip */
  338.     1500000,    /* 1.5 MHz ? */
  339.     { 50 }, /* volume */
  340.     { 0 },
  341.     { 0 },
  342.     { 0 },
  343.     { 0 }
  344. };
  345.  
  346. static struct DACinterface bl_dac_interface =
  347. {
  348.     1,
  349.     { 100 }
  350. };
  351.  
  352. /***************************************************************************
  353.  
  354.     Machine driver(s)
  355.  
  356. ***************************************************************************/
  357.  
  358. static struct MachineDriver machine_driver_exctsccr =
  359. {
  360.     /* basic machine hardware */
  361.     {
  362.         {
  363.             CPU_Z80,
  364.             4000000,    /* 4.0 Mhz (?) */
  365.             readmem,writemem,0,0,
  366.             interrupt,1
  367.         },
  368.         {
  369.             CPU_Z80,
  370.             4123456,    /* ??? with 4 MHz, nested NMIs might happen */
  371.             sound_readmem,sound_writemem,0,sound_writeport,
  372.             ignore_interrupt,0,
  373.             nmi_interrupt, 4000 /* 4 khz, updates the dac */
  374.         },
  375.     },
  376.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
  377.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  378.     0,
  379.  
  380.     /* video hardware */
  381.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  382.     gfxdecodeinfo,
  383.     32, 64*8,
  384.     exctsccr_vh_convert_color_prom,
  385.  
  386.     VIDEO_TYPE_RASTER,
  387.     0,
  388.     exctsccr_vh_start,
  389.     exctsccr_vh_stop,
  390.     exctsccr_vh_screenrefresh,
  391.  
  392.     /* sound hardware */
  393.     0, 0, 0, 0,
  394.     {
  395.         {
  396.             SOUND_AY8910,
  397.             &ay8910_interface
  398.         },
  399.         {
  400.             SOUND_DAC,
  401.             &dac_interface
  402.         }
  403.     }
  404. };
  405.  
  406. /* Bootleg */
  407. static struct MachineDriver machine_driver_exctsccb =
  408. {
  409.     /* basic machine hardware */
  410.     {
  411.         {
  412.             CPU_Z80,
  413.             4000000,    /* 4.0 Mhz (?) */
  414.             bl_readmem,bl_writemem,0,0,
  415.             interrupt,1
  416.         },
  417.         {
  418.             CPU_Z80,
  419.             3072000,    /* 3.072 Mhz ? */
  420.             bl_sound_readmem,bl_sound_writemem,0,0,
  421.             ignore_interrupt,0
  422.         },
  423.     },
  424.     60, DEFAULT_REAL_60HZ_VBLANK_DURATION, /* frames per second, vblank duration */
  425.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  426.     0,
  427.  
  428.     /* video hardware */
  429.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },
  430.     gfxdecodeinfo,
  431.     32, 64*8,
  432.     exctsccr_vh_convert_color_prom,
  433.  
  434.     VIDEO_TYPE_RASTER,
  435.     0,
  436.     generic_vh_start,
  437.     exctsccr_vh_stop,
  438.     exctsccr_vh_screenrefresh,
  439.  
  440.     /* sound hardware */
  441.     0, 0, 0, 0,
  442.     {
  443.         {
  444.             SOUND_AY8910,
  445.             &bl_ay8910_interface
  446.         },
  447.         {
  448.             SOUND_DAC,
  449.             &bl_dac_interface
  450.         }
  451.     }
  452. };
  453.  
  454. /***************************************************************************
  455.  
  456.   Game driver(s)
  457.  
  458. ***************************************************************************/
  459.  
  460. ROM_START( exctsccr )
  461.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  462.     ROM_LOAD( "1_g10.bin",    0x0000, 0x2000, 0xaa68df66 )
  463.     ROM_LOAD( "2_h10.bin",    0x2000, 0x2000, 0x2d8f8326 )
  464.     ROM_LOAD( "3_j10.bin",    0x4000, 0x2000, 0xdce4a04d )
  465.  
  466.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for code */
  467.     ROM_LOAD( "0_h6.bin",     0x0000, 0x2000, 0x3babbd6b )
  468.     ROM_LOAD( "9_f6.bin",     0x2000, 0x2000, 0x639998f5 )
  469.     ROM_LOAD( "8_d6.bin",     0x4000, 0x2000, 0x88651ee1 )
  470.     ROM_LOAD( "7_c6.bin",     0x6000, 0x2000, 0x6d51521e )
  471.     ROM_LOAD( "1_a6.bin",     0x8000, 0x1000, 0x20f2207e )
  472.  
  473.     ROM_REGION( 0x06000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  474.     ROM_LOAD( "4_a5.bin",     0x0000, 0x2000, 0xc342229b )
  475.     ROM_LOAD( "5_b5.bin",     0x2000, 0x2000, 0x35f4f8c9 )
  476.     ROM_LOAD( "6_c5.bin",     0x4000, 0x2000, 0xeda40e32 )
  477.  
  478.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  479.     ROM_LOAD( "2_k5.bin",     0x0000, 0x1000, 0x7f9cace2 )
  480.     ROM_LOAD( "3_l5.bin",     0x1000, 0x1000, 0xdb2d9e0d )
  481.  
  482.     ROM_REGION( 0x0220, REGION_PROMS )
  483.     ROM_LOAD( "prom1.e1",     0x0000, 0x0020, 0xd9b10bf0 ) /* palette */
  484.     ROM_LOAD( "prom2.8r",     0x0020, 0x0100, 0x8a9c0edf ) /* lookup table */
  485.     ROM_LOAD( "prom3.k5",     0x0120, 0x0100, 0xb5db1c2c ) /* lookup table */
  486. ROM_END
  487.  
  488. ROM_START( exctscca )
  489.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  490.     ROM_LOAD( "1_g10.bin",    0x0000, 0x2000, 0xaa68df66 )
  491.     ROM_LOAD( "2_h10.bin",    0x2000, 0x2000, 0x2d8f8326 )
  492.     ROM_LOAD( "3_j10.bin",    0x4000, 0x2000, 0xdce4a04d )
  493.  
  494.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for code */
  495.     ROM_LOAD( "exctsccc.000", 0x0000, 0x2000, 0x642fc42f )
  496.     ROM_LOAD( "exctsccc.009", 0x2000, 0x2000, 0xd88b3236 )
  497.     ROM_LOAD( "8_d6.bin",     0x4000, 0x2000, 0x88651ee1 )
  498.     ROM_LOAD( "7_c6.bin",     0x6000, 0x2000, 0x6d51521e )
  499.     ROM_LOAD( "1_a6.bin",     0x8000, 0x1000, 0x20f2207e )
  500.  
  501.     ROM_REGION( 0x06000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  502.     ROM_LOAD( "4_a5.bin",     0x0000, 0x2000, 0xc342229b )
  503.     ROM_LOAD( "5_b5.bin",     0x2000, 0x2000, 0x35f4f8c9 )
  504.     ROM_LOAD( "6_c5.bin",     0x4000, 0x2000, 0xeda40e32 )
  505.  
  506.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  507.     ROM_LOAD( "2_k5.bin",     0x0000, 0x1000, 0x7f9cace2 )
  508.     ROM_LOAD( "3_l5.bin",     0x1000, 0x1000, 0xdb2d9e0d )
  509.  
  510.     ROM_REGION( 0x0220, REGION_PROMS )
  511.     ROM_LOAD( "prom1.e1",     0x0000, 0x0020, 0xd9b10bf0 ) /* palette */
  512.     ROM_LOAD( "prom2.8r",     0x0020, 0x0100, 0x8a9c0edf ) /* lookup table */
  513.     ROM_LOAD( "prom3.k5",     0x0120, 0x0100, 0xb5db1c2c ) /* lookup table */
  514. ROM_END
  515.  
  516. /* Bootleg */
  517. ROM_START( exctsccb )
  518.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  519.     ROM_LOAD( "es-1.e2",      0x0000, 0x2000, 0x997c6a82 )
  520.     ROM_LOAD( "es-2.g2",      0x2000, 0x2000, 0x5c66e792 )
  521.     ROM_LOAD( "es-3.h2",      0x4000, 0x2000, 0xe0d504c0 )
  522.  
  523.     ROM_REGION( 0x10000, REGION_CPU2 )    /* sound */
  524.     ROM_LOAD( "es-a.k2",      0x0000, 0x2000, 0x99e87b78 )
  525.     ROM_LOAD( "es-b.l2",      0x2000, 0x2000, 0x8b3db794 )
  526.     ROM_LOAD( "es-c.m2",      0x4000, 0x2000, 0x7bed2f81 )
  527.  
  528.     ROM_REGION( 0x06000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  529.     /* I'm using the ROMs from exctscc2, national flags would be wrong otherwise */
  530.     ROM_LOAD( "vr.5a",        0x0000, 0x2000, BADCRC( 0x4ff1783d ) )
  531.     ROM_LOAD( "vr.5b",        0x2000, 0x2000, BADCRC( 0x5605b60b ) )
  532.     ROM_LOAD( "vr.5c",        0x4000, 0x2000, BADCRC( 0x1fb84ee6 ) )
  533.  
  534.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  535.     ROM_LOAD( "vr.5k",        0x0000, 0x1000, BADCRC( 0x1d37edfa ) )
  536.     ROM_LOAD( "vr.5l",        0x1000, 0x1000, BADCRC( 0xb97f396c ) )
  537.  
  538.     ROM_REGION( 0x0220, REGION_PROMS )
  539.     ROM_LOAD( "prom1.e1",     0x0000, 0x0020, 0xd9b10bf0 ) /* palette */
  540.     ROM_LOAD( "prom2.8r",     0x0020, 0x0100, 0x8a9c0edf ) /* lookup table */
  541.     ROM_LOAD( "prom3.k5",     0x0120, 0x0100, 0xb5db1c2c ) /* lookup table */
  542. ROM_END
  543.  
  544. ROM_START( exctscc2 )
  545.     ROM_REGION( 0x10000, REGION_CPU1 )    /* 64k for code */
  546.     ROM_LOAD( "vr.3j",        0x0000, 0x2000, 0xc6115362 )
  547.     ROM_LOAD( "vr.3k",        0x2000, 0x2000, 0xde36ba00 )
  548.     ROM_LOAD( "vr.3l",        0x4000, 0x2000, 0x1ddfdf65 )
  549.  
  550.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for code */
  551.     ROM_LOAD( "vr.7d",        0x0000, 0x2000, 0x2c675a43 )
  552.     ROM_LOAD( "vr.7e",        0x2000, 0x2000, 0xe571873d )
  553.     ROM_LOAD( "8_d6.bin",     0x4000, 0x2000, 0x88651ee1 )    /* vr.7f */
  554.     ROM_LOAD( "7_c6.bin",     0x6000, 0x2000, 0x6d51521e )    /* vr.7h */
  555.     ROM_LOAD( "1_a6.bin",     0x8000, 0x1000, 0x20f2207e )    /* vr.7k */
  556.  
  557.     ROM_REGION( 0x06000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  558.     ROM_LOAD( "vr.5a",        0x0000, 0x2000, 0x4ff1783d )
  559.     ROM_LOAD( "vr.5b",        0x2000, 0x2000, 0x5605b60b )
  560.     ROM_LOAD( "vr.5c",        0x4000, 0x2000, 0x1fb84ee6 )
  561.  
  562.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  563.     ROM_LOAD( "vr.5k",        0x0000, 0x1000, 0x1d37edfa )
  564.     ROM_LOAD( "vr.5l",        0x1000, 0x1000, 0xb97f396c )
  565.  
  566.     ROM_REGION( 0x0220, REGION_PROMS )
  567.     ROM_LOAD( "prom1.e1",     0x0000, 0x0020, 0xd9b10bf0 ) /* palette */
  568.     ROM_LOAD( "prom2.8r",     0x0020, 0x0100, 0x8a9c0edf ) /* lookup table */
  569.     ROM_LOAD( "prom3.k5",     0x0120, 0x0100, 0xb5db1c2c ) /* lookup table */
  570. ROM_END
  571.  
  572.  
  573.  
  574. GAMEX( 1983, exctsccr, 0,        exctsccr, exctsccr, 0, ROT90, "Alpha Denshi Co.", "Exciting Soccer", GAME_NO_COCKTAIL )
  575. GAMEX( 1983, exctscca, exctsccr, exctsccr, exctsccr, 0, ROT90, "Alpha Denshi Co.", "Exciting Soccer (alternate music)", GAME_NO_COCKTAIL )
  576. GAMEX( 1984, exctsccb, exctsccr, exctsccb, exctsccr, 0, ROT90, "bootleg", "Exciting Soccer (bootleg)", GAME_NO_COCKTAIL )
  577. GAMEX( 1984, exctscc2, exctsccr, exctsccr, exctsccr, 0, ROT90, "Alpha Denshi Co.", "Exciting Soccer II", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
  578.